www.gusucode.com > 轻量级UBB网页编辑器jtbcEditor 源码及实例源码程序 > 轻量级UBB网页编辑器jtbcEditor 源码及实例/jtbcEditor/jtbcEditor/jtbceditor/jtbcEditor.js
function jtbcEditor(_id) { this.tid = _id; this.tName = ''; this.tValue = ''; this.tbaseURL = ''; this.tPanelHeight = 22; this.tEditState = 1; this.tEditUBBMode = 1; this.tInstance = null; this.tSelection = null; this.tRange = null; this.tRangeText = null; this.tInputObject = null; this.tLang = 'zh-cn'; this.tTheme = 'default'; this.tToolbar = 'default'; this.tToolbarSets = Array; this.tToolbarSets['default'] = ['Source','separator','Bold','Italic','Underline','RemoveFormat','separator','Link','Unlink','Image','Smiley','separator','JustifyLeft','JustifyCenter','JustifyRight','JustifyFull','separator','OrderedList','UnorderedList','TextColor','BGColor']; this.tVersion = '1.0.0.0'; this.tAuthor = 'jetiben'; this.tEI = function(_id) { return document.getElementById(_id); }; this.tEH = function(_strers, _strtagname) { var tObject = null; var tstrers = _strers; var tstrtagname = _strtagname; if (tstrers && tstrtagname) { var tObj1 = this.tEI(this.tid + '-divFactory'); tObj1.innerHTML = tstrers; tObject = tObj1.getElementsByTagName(tstrtagname).item(0); }; return tObject; }; this.tFW = function(_id) { var tid = _id; var tobj = null; try { tobj = document.frames[tid]; } catch(e){}; if (tobj == null) { try { tobj = this.tEI(tid).contentWindow; } catch(e){}; }; return tobj; }; this.tAttachEvent = function(_obj, _eventName, _handler, _object) { var tobj = _obj; var teventName = _eventName; var thandler = _handler; var teventHandler = _handler; var tobject = _object; if (tobj) { if (tobject) { teventHandler = function(e) { thandler.call(tobject, e); }; }; try {tobj.addEventListener(teventName, teventHandler, false);} catch(e) { if (teventName == 'keypress') tobj = tobj.document; tobj.attachEvent('on' + teventName, teventHandler); }; }; }; this.tIsIE = function() { return (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all); }; this.tReplace = function(_strers, _reary, _ign) { var tstrers = _strers; var treary = _reary; var tign = _ign; var tstate1 = true; for (var ti = 0; ti < treary.length; ti ++) { if (!treary[ti][2]) tstrers = tstrers.replace(treary[ti][0], (tign ? '' : treary[ti][1])); }; while(tstate1) { tstate1 = false; for (var ti = 0; ti < treary.length; ti ++) { if (treary[ti][2] && tstrers.search(treary[ti][0]) != -1) { tstate1 = true; tstrers = tstrers.replace(treary[ti][0], (tign ? '' : treary[ti][1])); }; }; }; return tstrers; }; this.tHTMLEncode = function(_strers) { var tstrers = _strers; if (tstrers) { tstrers = tstrers.replace(/&/igm, '&'); tstrers = tstrers.replace(/</igm, '<'); tstrers = tstrers.replace(/>/igm, '>'); tstrers = tstrers.replace(/\"/igm, '"'); }; return tstrers; }; this.tHTMLDecode = function(_strers) { var tstrers = _strers; if (tstrers) { tstrers = tstrers.replace(/</igm, '<'); tstrers = tstrers.replace(/>/igm, '>'); tstrers = tstrers.replace(/"/igm, '"'); tstrers = tstrers.replace(/ /igm, ' '); tstrers = tstrers.replace(/&/igm, '&'); }; return tstrers; }; this.tHTMLClear = function(_strers) { var tstrers = _strers; if (tstrers) { tstrers = tstrers.replace(/<script[^>]*>[\s\S]*?<\/script[^>]*>/gim, ''); tstrers = tstrers.replace(/<(\/?)(script|i?frame|style|html|head|body|title|link|meta|object|\?|\%)([^>]*?)>/gi, ''); tstrers = tstrers.replace(/<([a-z]+)+\s*(?:onerror|onload|onunload|onresize|onblur|onchange|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousemove|onmousedown|onmouseout|onmouseover|onmouseup|onselect)[^>]*>/gi, '<$1>'); }; return tstrers; }; this.tHTML2XHTML = function(_strers) { var tstrers = _strers; if (tstrers) { tstrers = tstrers.replace(/<br.*?>/gi, '<br />'); tstrers = tstrers.replace(/(<hr\s+[^>]*[^\/])(>)/gi, '$1 />'); tstrers = tstrers.replace(/(<img\s+[^>]*[^\/])(>)/gi, '$1 />'); }; return tstrers; }; this.tXHTML2UBB = function(_strers) { var tstrers = _strers; if (tstrers) { var tthis = this; var tReplaceAry = [ [/<br \/>/ig, '[br]', false], [/<p>([^<]*?)<\/p>/igm, '[p]$1[/p]', true], [/<b>([^<]*?)<\/b>/igm, '[b]$1[/b]', true], [/<strong>([^<]*?)<\/strong>/igm, '[b]$1[/b]', true], [/<i>([^<]*?)<\/i>/igm, '[i]$1[/i]', true], [/<em>([^<]*?)<\/em>/igm, '[i]$1[/i]', true], [/<u>([^<]*?)<\/u>/igm, '[u]$1[/u]', true], [/<ol>([^<]*?)<\/ol>/igm, '[ol]$1[/ol]', true], [/<ul>([^<]*?)<\/ul>/igm, '[ul]$1[/ul]', true], [/<li>([^<]*?)<\/li>/igm, '[li]$1[/li]', true], [/<span\s[^>]*?>([^<]*?)<\/span>/igm, function($0, $1) { var tString = $1; var tObj1 = tthis.tEH($0, 'span'); if (tObj1.style.fontWeight.toLowerCase() == 'bold') tString = '[b]' + tString + '[/b]'; if (tObj1.style.fontStyle.toLowerCase() == 'italic') tString = '[i]' + tString + '[/i]'; if (tObj1.style.textDecoration.toLowerCase() == 'underline') tString = '[u]' + tString + '[/u]'; if (tObj1.style.color) tString = '[color=' + tObj1.style.color + ']' + tString + '[/color]'; if (tObj1.style.backgroundColor) tString = '[hilitecolor=' + tObj1.style.backgroundColor + ']' + tString + '[/hilitecolor]'; return tString; }, true], [/<font\s[^>]*?>([^<]*?)<\/font>/igm, function($0, $1) { var tString = $1; var tObj1 = tthis.tEH($0, 'font'); if (tObj1.getAttribute('color')) tString = '[color=' + tObj1.getAttribute('color') + ']' + tString + '[/color]'; if (tObj1.style.color) tString = '[color=' + tObj1.style.color + ']' + tString + '[/color]'; if (tObj1.style.backgroundColor) tString = '[hilitecolor=' + tObj1.style.backgroundColor + ']' + tString + '[/hilitecolor]'; return tString; }, true], [/<p\s[^>]*?>([^<]*?)<\/p>/igm, function($0, $1) { var tString = $1; var tObj1 = tthis.tEH($0, 'p'); if (tObj1.getAttribute('align')) tString = '[align=' + tObj1.getAttribute('align') + ']' + tString + '[/align]'; if (tObj1.style.textAlign) tString = '[align=' + tObj1.style.textAlign + ']' + tString + '[/align]'; tString = '[p]' + tString + '[/p]'; return tString; }, true], [/<div\s[^>]*?>([^<]*?)<\/div>/igm, function($0, $1) { var tString = $1; var tObj1 = tthis.tEH($0, 'div'); if (tObj1.className == 'ubb_code') tString = '[code]' + tString + '[/code]'; if (tObj1.className == 'ubb_quote') tString = '[quote]' + tString + '[/quote]'; if (tObj1.getAttribute('align')) tString = '[align=' + tObj1.getAttribute('align') + ']' + tString + '[/align]'; if (tObj1.style.textAlign) tString = '[align=' + tObj1.style.textAlign + ']' + tString + '[/align]'; return tString; }, true], [/<a\s[^>]*?>([^<]*?)<\/a>/igm, function($0, $1) { var tString = $1; var tObj1 = tthis.tEH($0, 'a'); if (tObj1.getAttribute('href')) tString = '[url=' + tObj1.getAttribute('href') + ']' + tString + '[/url]'; return tString; }, true], [/<img\s[^>]*?>/igm, function($0) { var tObj1 = tthis.tEH($0, 'img'); if (tObj1.getAttribute('src')) tString = '[img]' + tObj1.getAttribute('src') + '[/img]'; return tString; }, true] ]; tstrers = this.tReplace(tstrers, tReplaceAry); tstrers = tstrers.replace(/<[^>]*>/igm, ''); tstrers = this.tHTMLDecode(tstrers); }; return tstrers; }; this.tUBB2XHTML = function(_strers) { var tstrers = _strers; if (tstrers) { var tthis = this; var tReplaceAry = [ [/\[br\]/ig, '<br />', false], [/\[p\]([^\[]*?)\[\/p\]/igm, '<p>$1</p>', true], [/\[b\]([^\[]*?)\[\/b\]/igm, '<b>$1</b>', true], [/\[i\]([^\[]*?)\[\/i\]/igm, '<i>$1</i>', true], [/\[u\]([^\[]*?)\[\/u\]/igm, '<u>$1</u>', true], [/\[ol\]([^\[]*?)\[\/ol\]/igm, '<ol>$1</ol>', true], [/\[ul\]([^\[]*?)\[\/ul\]/igm, '<ul>$1</ul>', true], [/\[li\]([^\[]*?)\[\/li\]/igm, '<li>$1</li>', true], [/\[code\]([^\[]*?)\[\/code\]/igm, '<div class="ubb_code" style="BORDER: #dcdcdc 1px dotted; PADDING: 5px; LINE-HEIGHT: 150%; FONT-STYLE: italic">$1</div>', true], [/\[quote\]([^\[]*?)\[\/quote\]/igm, '<div class="ubb_quote" style="BORDER: #dcdcdc 1px dotted; PADDING: 5px; LINE-HEIGHT: 150%">$1</div>', true], [/\[color=([^\]]*)\]([^\[]*?)\[\/color\]/igm, '<font style="color: $1">$2</font>', true], [/\[hilitecolor=([^\]]*)\]([^\[]*?)\[\/hilitecolor\]/igm, '<font style="background-color: $1">$2</font>', true], [/\[align=([^\]]*)\]([^\[]*?)\[\/align\]/igm, '<div style="text-align: $1">$2</div>', true], [/\[url=([^\]]*)\]([^\[]*?)\[\/url\]/igm, '<a href="$1">$2</a>', true], [/\[img\]([^\[]*?)\[\/img\]/igm, '<img src="$1" />', true] ]; tstrers = this.tHTMLEncode(tstrers); tstrers = this.tReplace(tstrers, tReplaceAry); }; return tstrers; }; this.tcreateStyleSheet = function() { var tObj1 = document.getElementsByTagName('head').item(0); if (!tObj1) tObj1 = document.getElementsByTagName('body').item(0); if (tObj1) { var tLink1 = document.createElement('link'); tLink1.setAttribute('rel', 'stylesheet'); tLink1.setAttribute('type', 'text/css'); tLink1.setAttribute('href', this.tbaseURL + 'common/theme/' + this.tTheme + '/css/editor.css'); tObj1.appendChild(tLink1); }; }; this.tinsertUBB = function(_Value) { var tValue = _Value; tValue = this.tUBB2XHTML(tValue); this.tinsertHTML(tValue); }; this.tinsertHTML = function(_Value) { var tValue = _Value; if (tValue) { this.tInstance.focus(); try { this.tGetSelection(); this.tRange.pasteHTML(tValue); } catch(e) { this.texecCommand('insertHTML', tValue); }; }; }; this.tsetCommand = function(_Command, _Value) { var tCommand = _Command; var tValue = _Value; if (this.tEditState == 1) { switch (tCommand) { case 'Source': this.tShowSource(); break; case 'RemoveFormat': this.texecCommand('removeformat'); break; case 'Bold': this.texecCommand('bold'); break; case 'Italic': this.texecCommand('italic'); break; case 'Underline': this.texecCommand('underline'); break; case 'OrderedList': this.texecCommand('insertorderedlist'); break; case 'UnorderedList': this.texecCommand('insertunorderedlist'); break; case 'JustifyLeft': this.texecCommand('justifyleft'); break; case 'JustifyCenter': this.texecCommand('justifycenter'); break; case 'JustifyRight': this.texecCommand('justifyright'); break; case 'JustifyFull': this.texecCommand('justifyfull'); break; case 'TextColor': this.tLoadForeColorTable(); break; case 'TextColorS': this.tLoadMaskClose(); this.texecCommand('forecolor', tValue); break; case 'BGColor': this.tLoadBackColorTable(); break; case 'BGColorS': this.tLoadMaskClose(); try {this.texecCommand('hilitecolor', tValue);} catch(e) {this.texecCommand('backcolor', tValue);}; break; case 'Link': this.tLoadLinkTable(); this.tGetSelection(); break; case 'LinkS': this.tLoadMaskClose(); this.tRangeReselect(); this.texecCommand('createlink', tValue); break; case 'Unlink': this.texecCommand('unlink'); break; case 'Image': this.tLoadImageTable(); this.tGetSelection(); break; case 'ImageS': this.tLoadMaskClose(); this.tRangeReselect(); this.texecCommand('insertimage', tValue); break; case 'Smiley': this.tLoadSmileyTable(); break; case 'SmileyS': this.tLoadMaskClose(); this.texecCommand('insertimage', tValue); break; }; } else { if (tCommand == 'Source') this.tShowNormal(); else this.tLoadMessage(jtbcEditorLang.tError1); }; }; this.texecCommand = function(_Command, _Value) { var tCommand = _Command; var tValue = _Value; this.tInstance.focus(); this.tInstance.document.execCommand(tCommand, false, tValue); }; this.tGetHTML = function() { var tHTML = this.tInstance.document.body.innerHTML.toLowerCase(); return tHTML; }; this.tGetUBB = function() { var tHTML = this.tGetHTML(); tHTML = this.tHTML2XHTML(tHTML); tHTML = this.tHTMLClear(tHTML); tHTML = this.tXHTML2UBB(tHTML); return tHTML; }; this.tGetSelection = function() { try { this.tSelection = this.tInstance.document.selection; this.tRange = this.tSelection.createRange(); this.tRangeText = this.tRange.text; } catch(e) { this.tSelection = this.tInstance.getSelection(); this.tRange = this.tSelection.getRangeAt(0); this.tRangeText = this.tRange.toString(); }; }; this.tRangeReselect = function() { try { if (this.tRangeText) this.tRange.select(); else this.tRange.focus(); } catch(e) {}; }; this.tSetInputValue = function() { var tHTML = this.tGetHTML(); tHTML = this.tHTML2XHTML(tHTML); tHTML = this.tHTMLClear(tHTML); if (this.tEditUBBMode == 1) tHTML = this.tXHTML2UBB(tHTML); this.tInputObject.value = tHTML; }; this.tShowSource = function() { if (this.tEditState == 1) { var tSourceImageObj; var tHTML = this.tGetHTML(); this.tEditState = 0; tHTML = this.tHTML2XHTML(tHTML); tHTML = this.tHTMLClear(tHTML); if (this.tEditUBBMode == 1) tHTML = this.tXHTML2UBB(tHTML); tSourceImageObj = this.tEI(this.tid + '-jtbcEditorToolbar-Source'); tSourceImageObj.onmouseover = function() {}; tSourceImageObj.onmouseout = function() {}; tSourceImageObj.className = 'jtbcEditorSelected'; this.tEI(this.tid + '-textarea').style.display = ''; this.tEI(this.tid + '-iframe').style.display = 'none'; this.tEI(this.tid + '-textarea').value = tHTML; }; }; this.tShowNormal = function() { if (this.tEditState == 0) { var tSourceImageObj; var tnValue = this.tEI(this.tid + '-textarea').value; this.tEditState = 1; if (this.tEditUBBMode == 1) tnValue = this.tUBB2XHTML(tnValue); else tnValue = this.tHTMLClear(tnValue); tSourceImageObj = this.tEI(this.tid + '-jtbcEditorToolbar-Source'); tSourceImageObj.onmouseover = function() {this.className = 'jtbcEditorSelected'}; tSourceImageObj.onmouseout = function() {this.className = ''}; tSourceImageObj.className = ''; this.tEI(this.tid + '-textarea').style.display = 'none'; this.tEI(this.tid + '-iframe').style.display = ''; this.tInstance.document.body.innerHTML = tnValue; }; }; this.tLoadToolbar = function(_obj) { var tObj1 = _obj; if (tObj1) { var tHTMLString1 = ''; var tArray1 = this.tToolbarSets[this.tToolbar]; if (!tArray1) tArray1 = this.tToolbarSets['default']; for (var tKey1 in tArray1) { var tnKey = tArray1[tKey1]; if (tnKey == '-' || tnKey == 'separator') tHTMLString1 += '<img src="' + this.tbaseURL + 'common/theme/' + this.tTheme + '/images/icon/toolbar.' + tnKey + '.gif" />'; else tHTMLString1 += '<img id="' + this.tid + '-jtbcEditorToolbar-' + tnKey + '" src="' + this.tbaseURL + 'common/theme/' + this.tTheme + '/images/icon/' + tnKey + '.gif" onmouseover="this.className = \'jtbcEditorSelected\';" onmouseout="this.className = \'\';" onclick="' + this.tName + '.tsetCommand(\'' + tnKey + '\');" />'; }; tObj1.innerHTML = tHTMLString1; }; }; this.tLoadMask = function() { var tObj1 = this.tEI(this.tid + '-div'); if (tObj1) { var tDiv1 = document.createElement('div'); tDiv1.setAttribute('id', this.tid + '-jtbcEditorMask'); tDiv1.style.position = 'absolute'; tDiv1.style.top = '0'; tDiv1.style.left = '0'; tDiv1.style.background = '#FFFFFF'; tDiv1.style.filter = 'Alpha(Opacity=50)'; tDiv1.style.opacity = '0.5'; tDiv1.style.width = tObj1.offsetWidth + 'px'; tDiv1.style.height = tObj1.offsetHeight + 'px'; tDiv1.style.zIndex = '100'; tObj1.appendChild(tDiv1); var tDiv2 = document.createElement('div'); tDiv2.setAttribute('id', this.tid + '-jtbcEditorMaskDIV'); tDiv2.style.position = 'absolute'; tDiv2.style.top = '50%'; tDiv2.style.left = '50%'; tDiv2.style.zIndex = '101'; tObj1.appendChild(tDiv2); }; }; this.tLoadMaskShow = function(_strHTML) { var tstrHTML = _strHTML; if (tstrHTML) { var tObj1 = this.tEI(this.tid + '-jtbcEditorMaskDIV'); if (!tObj1) { this.tLoadMask(); tObj1 = this.tEI(this.tid + '-jtbcEditorMaskDIV'); }; if (tObj1) { tObj1.style.display = 'none'; tObj1.innerHTML = tstrHTML; tObj1.style.display = 'block'; tObj1.style.marginLeft = (0 - Math.floor(tObj1.offsetWidth / 2)) + 'px'; tObj1.style.marginTop = (0 - Math.floor(tObj1.offsetHeight / 2)) + 'px'; }; }; }; this.tLoadMaskClose = function() { var tObj1 = this.tEI(this.tid + '-div'); if (tObj1) { var tobj21 = this.tEI(this.tid + '-jtbcEditorMask'); var tobj22 = this.tEI(this.tid + '-jtbcEditorMaskDIV'); if (tobj21 && tobj22) { tObj1.removeChild(tobj21); tObj1.removeChild(tobj22); }; }; }; this.tLoadMessage = function(_strers) { var tstrers = _strers; var tMessageTableHTML = '<table cellpadding="0" cellspacing="5" class="jtbcEditorMessageTable">'; tMessageTableHTML += ' <tr>'; tMessageTableHTML += ' <td>' + jtbcEditorLang.tHint + '</td>'; tMessageTableHTML += ' </tr>'; tMessageTableHTML += ' <tr>'; tMessageTableHTML += ' <td height="20"></td>'; tMessageTableHTML += ' </tr>'; tMessageTableHTML += ' <tr>'; tMessageTableHTML += ' <td><span>' + tstrers + '</span></td>'; tMessageTableHTML += ' </tr>'; tMessageTableHTML += ' <tr>'; tMessageTableHTML += ' <td height="20"></td>'; tMessageTableHTML += ' </tr>'; tMessageTableHTML += ' <tr>'; tMessageTableHTML += ' <td class="jtbcEditorTD1"><input type="button" value="' + jtbcEditorLang.tOK + '" class="jtbcEditorMessageButton" onclick="' + this.tName + '.tLoadMaskClose();" /></td>'; tMessageTableHTML += ' </tr>'; tMessageTableHTML += '</table>'; this.tLoadMaskShow(tMessageTableHTML); }; this.tLoadLinkTable = function() { var tLinkTableHTML = '<table cellpadding="0" cellspacing="5" class="jtbcEditorLinkTable">'; tLinkTableHTML += ' <tr>'; tLinkTableHTML += ' <td>' + jtbcEditorLang.tLinkURL + '</td>'; tLinkTableHTML += ' </tr>'; tLinkTableHTML += ' <tr>'; tLinkTableHTML += ' <td><input id="' + this.tid + '-jtbcEditorLinkText" type="text" value="http://" class="jtbcEditorLinkText" ondblclick="this.select();" /></td>'; tLinkTableHTML += ' </tr>'; tLinkTableHTML += ' <tr>'; tLinkTableHTML += ' <td class="jtbcEditorTD1"><input type="button" value="' + jtbcEditorLang.tOK + '" class="jtbcEditorLinkButton" onclick="' + this.tName + '.tsetCommand(\'LinkS\', ' + this.tName + '.tEI(\'' + this.tid + '-jtbcEditorLinkText\').value);" /> <input type="button" value="' + jtbcEditorLang.tCancel + '" class="jtbcEditorLinkButton" onclick="' + this.tName + '.tLoadMaskClose();" /></td>'; tLinkTableHTML += ' </tr>'; tLinkTableHTML += '</table>'; this.tLoadMaskShow(tLinkTableHTML); }, this.tLoadImageTable = function() { var tLinkTableHTML = '<table cellpadding="0" cellspacing="5" class="jtbcEditorImageTable">'; tLinkTableHTML += ' <tr>'; tLinkTableHTML += ' <td>' + jtbcEditorLang.tImageURL + '</td>'; tLinkTableHTML += ' </tr>'; tLinkTableHTML += ' <tr>'; tLinkTableHTML += ' <td><input id="' + this.tid + '-jtbcEditorImageText" type="text" value="http://" class="jtbcEditorImageText" ondblclick="this.select();" /></td>'; tLinkTableHTML += ' </tr>'; tLinkTableHTML += ' <tr>'; tLinkTableHTML += ' <td class="jtbcEditorTD1"><input type="button" value="' + jtbcEditorLang.tOK + '" class="jtbcEditorImageButton" onclick="' + this.tName + '.tsetCommand(\'ImageS\', ' + this.tName + '.tEI(\'' + this.tid + '-jtbcEditorImageText\').value);" /> <input type="button" value="' + jtbcEditorLang.tCancel + '" class="jtbcEditorImageButton" onclick="' + this.tName + '.tLoadMaskClose();" /></td>'; tLinkTableHTML += ' </tr>'; tLinkTableHTML += '</table>'; this.tLoadMaskShow(tLinkTableHTML); }, this.tLoadSmileyTable = function() { var tni = 0; var tRowNum = 6; var tSmileyTableHTML = '<table cellpadding="0" cellspacing="5" class="jtbcEditorSmileyTable">'; tSmileyTableHTML += ' <tr>'; tSmileyTableHTML += ' <td colspan="' + tRowNum + '">' + jtbcEditorLang.tSmileyImage + '</td>'; tSmileyTableHTML += ' </tr>'; tSmileyTableHTML += ' <tr>'; for (var ti = 0; ti < 24; ti ++) { tni += 1; tSmileyTableHTML +=' <td><img src="' + this.tbaseURL + 'common/theme/' + this.tTheme + '/images/smiley/' + tni + '.gif" onclick="' + this.tName + '.tsetCommand(\'SmileyS\', this.src);" /></td>'; if (tni % tRowNum == 0 && tni != 25) { tSmileyTableHTML += ' </tr>'; tSmileyTableHTML += ' <tr>'; }; }; tSmileyTableHTML += ' </tr>'; tSmileyTableHTML += '</table>'; this.tLoadMaskShow(tSmileyTableHTML); }; this.tLoadForeColorTable = function() { var tni = 0; var tRowNum = 8; var tColorHexAry = new Array('00','88','CC','FF'); var tColorHexAryLength = tColorHexAry.length; var tColorTableHTML = '<table cellpadding="0" cellspacing="5" class="jtbcEditorColorTable">'; tColorTableHTML += ' <tr>'; tColorTableHTML += ' <td colspan="' + tRowNum + '">' + jtbcEditorLang.tColorPicker + '</td>'; tColorTableHTML += ' </tr>'; tColorTableHTML += ' <tr>'; for (var ti = 0; ti < tColorHexAryLength; ti ++) { for (var tj = 0; tj < tColorHexAryLength; tj ++) { for (var tk = 0; tk < tColorHexAryLength; tk ++) { tni += 1; tColorTableHTML +=' <td bgcolor="#' + tColorHexAry[ti] + tColorHexAry[tj] + tColorHexAry[tk] + '"><img src="' + this.tbaseURL + 'common/theme/' + this.tTheme + '/images/space.gif" onclick="' + this.tName + '.tsetCommand(\'TextColorS\', \'#' + tColorHexAry[ti] + tColorHexAry[tj] + tColorHexAry[tk] + '\');" width="11" height="11" /></td>'; if (tni % tRowNum == 0 && tni != (tColorHexAryLength*tColorHexAryLength*tColorHexAryLength)) { tColorTableHTML += ' </tr>'; tColorTableHTML += ' <tr>'; }; }; }; }; tColorTableHTML += ' </tr>'; tColorTableHTML += '</table>'; this.tLoadMaskShow(tColorTableHTML); }; this.tLoadBackColorTable = function() { var tni = 0; var tRowNum = 8; var tColorHexAry = new Array('00','88','CC','FF'); var tColorHexAryLength = tColorHexAry.length; var tColorTableHTML = '<table cellpadding="0" cellspacing="5" class="jtbcEditorColorTable">'; tColorTableHTML += ' <tr>'; tColorTableHTML += ' <td colspan="' + tRowNum + '">' + jtbcEditorLang.tColorPicker + '</td>'; tColorTableHTML += ' </tr>'; tColorTableHTML += ' <tr>'; for (var ti = 0; ti < tColorHexAryLength; ti ++) { for (var tj = 0; tj < tColorHexAryLength; tj ++) { for (var tk = 0; tk < tColorHexAryLength; tk ++) { tni += 1; tColorTableHTML +=' <td bgcolor="#' + tColorHexAry[ti] + tColorHexAry[tj] + tColorHexAry[tk] + '"><img src="' + this.tbaseURL + 'common/theme/' + this.tTheme + '/images/space.gif" onclick="' + this.tName + '.tsetCommand(\'BGColorS\', \'#' + tColorHexAry[ti] + tColorHexAry[tj] + tColorHexAry[tk] + '\');" width="11" height="11" /></td>'; if (tni % tRowNum == 0 && tni != (tColorHexAryLength*tColorHexAryLength*tColorHexAryLength)) { tColorTableHTML += ' </tr>'; tColorTableHTML += ' <tr>'; }; }; }; }; tColorTableHTML += ' </tr>'; tColorTableHTML += '</table>'; this.tLoadMaskShow(tColorTableHTML); }; this.tInit = function(_name, _baseURL) { this.tName = _name; this.tbaseURL = _baseURL; var tObj1 = this.tEI(this.tid); if (tObj1) { this.tcreateStyleSheet(); this.tValue = tObj1.value; var tObj1Name = tObj1.name; var tObj1Width = tObj1.offsetWidth; var tObj1Height = tObj1.offsetHeight; var tObj2 = tObj1.parentNode; var tDiv1 = document.createElement('div'); tDiv1.setAttribute('id', this.tid + '-div'); tDiv1.style.width = tObj1Width + 'px'; tDiv1.style.height = tObj1Height + 'px'; tDiv1.className = 'jtbcEditorDiv'; tObj2.appendChild(tDiv1); tObj2.replaceChild(tDiv1, tObj1); var tScript1 = document.createElement('script'); tScript1.type = 'text/javascript'; tScript1.src = '' + this.tbaseURL + 'common/lang/' + this.tLang + '.js'; tDiv1.appendChild(tScript1); var tInput1 = document.createElement('input'); tInput1.type = 'hidden'; tInput1.name = tObj1Name; tDiv1.appendChild(tInput1); this.tInputObject = tInput1; var tDiv2 = document.createElement('div'); tDiv2.setAttribute('id', this.tid + '-divPanel'); tDiv2.style.height = this.tPanelHeight + 'px'; tDiv2.className = 'jtbcEditorDivPanel'; tDiv1.appendChild(tDiv2); this.tLoadToolbar(tDiv2); var tDiv3 = document.createElement('div'); tDiv3.setAttribute('id', this.tid + '-divFactory'); tDiv3.style.display = 'none'; tDiv1.appendChild(tDiv3); var tTextarea1 = document.createElement('textarea'); tTextarea1.setAttribute('id', this.tid + '-textarea'); tTextarea1.style.width = tObj1Width + 'px'; tTextarea1.style.maxWidth = tObj1Width + 'px'; tTextarea1.style.height = (tObj1Height - this.tPanelHeight - 5) + 'px'; tTextarea1.style.maxHeight = (tObj1Height - this.tPanelHeight - 5) + 'px'; tTextarea1.style.display = 'none'; tTextarea1.className = 'jtbcEditorTextarea'; tDiv1.appendChild(tTextarea1); var tIframe1 = document.createElement('iframe'); tIframe1.setAttribute('id', this.tid + '-iframe'); tIframe1.setAttribute('frameBorder', '0'); tIframe1.setAttribute('marginWidth', '3'); tIframe1.setAttribute('marginHeight', '3'); tIframe1.setAttribute('allowTransparency', 'true'); tIframe1.style.width = '100%'; tIframe1.style.height = (tObj1Height - this.tPanelHeight - 5) + 'px'; tIframe1.className = 'jtbcEditorIframe'; tDiv1.appendChild(tIframe1); var tObj3 = this.tFW(this.tid + '-iframe'); if (this.tEditUBBMode == 1) this.tValue = this.tUBB2XHTML(this.tValue); var tObj3HTML = '<html><head><link href="' + this.tbaseURL + 'common/theme/' + this.tTheme + '/css/iframe.css" rel="stylesheet" type="text/css" /></head><body>' + this.tValue + '</body></html>'; tObj3.document.designMode = 'On'; tObj3.document.open(); tObj3.document.writeln(tObj3HTML); tObj3.document.close(); this.tInstance = tObj3; var tObj3Object = new Object(); tObj3Object.tObject = this; tObj3Object.tInstance = this.tInstance; this.tAttachEvent(tObj3, 'blur', this.tOnblur, tObj3Object); this.tAttachEvent(tObj3, 'keypress', this.tOnkeypress, tObj3Object); this.tSetInputValue(); }; }; this.tOnblur = function() { this.tObject.tSetInputValue(); }; this.tOnkeypress = function() { if (this.tObject.tEditState == 1) { var tObjP = this.tInstance.document.getElementsByTagName('p'); if (!tObjP[0]) this.tObject.texecCommand('formatblock', '<p>'); }; }; };